﻿
Imports System.Text

Imports Moca.Di
Imports Moca.Web

Public MustInherit Class AbstractUnitTest

	Protected Friend injector As MocaInjector

	Protected Friend injectorPage As MocaPageInjector

	Public Sub New()
		injector = New MocaInjector
		injectorPage = New MocaPageInjector
	End Sub

	''' <summary>
	''' テストを作成するときに、次の追加属性を使用することができます:
	''' </summary>
	''' <param name="testContext"></param>
	''' <remarks>
	''' クラスの最初のテストを実行する前にコードを実行するには、ClassInitialize を使用
	''' </remarks>
	Protected Shared Sub ClassInitialize(ByVal testContext As TestContext)
		MocaContainerFactory.Init()
	End Sub

	''' <summary>
	''' クラスのすべてのテストを実行した後にコードを実行するには、ClassCleanup を使用
	''' </summary>
	''' <remarks></remarks>
	Protected Shared Sub ClassCleanup()
		MocaContainerFactory.Destroy()
	End Sub

	''' <summary>
	''' 各テストを実行する前にコードを実行するには、TestInitialize を使用
	''' </summary>
	''' <remarks></remarks>
	Public Overridable Sub TestInitialize()
		Me.inject()
	End Sub

	''' <summary>
	''' 各テストを実行した後にコードを実行するには、TestCleanup を使用
	''' </summary>
	''' <remarks></remarks>
	Public Overridable Sub TestCleanup()
	End Sub

	Protected Friend Sub inject()
		inject(Me)
	End Sub

	Protected Friend Sub injectWeb()
		injectWeb(Me)
	End Sub

	Protected Sub inject(ByVal obj As Object)
		injector.Inject(obj)
	End Sub

	Protected Sub injectWeb(ByVal obj As Object)
		injectorPage.Inject(obj)
	End Sub

End Class